package org.lboot.idmo.module.user;


import org.lboot.idmo.module.role.SysRole;
import org.lboot.jpa.service.UniService;


import javax.transaction.Transactional;
import java.util.List;
import java.util.Optional;

/**
 * @author kindear
 */
public interface SysUserService extends UniService<SysUser,Long> {

    /**
     * 获取用户关联角色列表
     * @param userId
     * @return
     */
    List<SysRole> getRoles(Long userId);
    /**
     * 根据用户名查询 -- 要求用户名必须是唯一的
     * @param
     * @return
     */
    Optional<SysUser> getByUsername(String userName);

    /**
     * 根据手机号查询 要求手机号必须是唯一的
     * @param mobile
     * @return
     */
    @Deprecated
    Optional<SysUser> getByMobileV1(String mobile);

    List<SysUser> getByMobile(String mobile);
    /**
     * 手机号是否存在
     * @param mobile
     * @return
     */
    Boolean isMobileExist(String mobile);

    /**
     * 默认方法中已经提供
     * 根据ID列表获取
     * @param ids
     * @return
     */
    @Deprecated
    List<SysUser> getByIdBatch(List<Long> ids);

    /**
     * 批量更新 saveAll
     * @param users
     * @return
     */
    @Deprecated
    @Transactional
    List<SysUser> batchUpdate(List<SysUser> users);

}
